# -*- coding: utf-8 -*-
from Tkinter import *
import tkMessageBox
import ConvertReport
import os

class WinApp:
    def __init__(self):
        self.root = Tk(className="帳票作成ツール")
        font = ('ＭＳ ゴシック', 11, NORMAL)
        frame0 = Frame(self.root)
        frame0.pack(side=TOP)
        label0 = Label(frame0, text=u"XMLファイル ：", font=font)
        label0.pack(side=LEFT)
        self.srcDir = Entry(frame0, font=font, width=80)
        self.srcDir.pack(side=LEFT)
        self.findSrcDir = Button(frame0, text=u"参照", command=self.findSrcFolder, font=font)
        self.findSrcDir.pack(side=LEFT)
        
        frame1 = Frame(self.root)
        frame1.pack(side=TOP)
        frame1.pack(side=TOP)
        label1 = Label(frame1, text=u"帳票フォルダ：", font=font)
        label1.pack(side=LEFT)
        self.tarDir = Entry(frame1, font=font, width=80)
        self.tarDir.pack(side=LEFT)
        self.findTarDir = Button(frame1, text=u"参照", command=self.findTarFolder, font=font)
        self.findTarDir.pack(side=LEFT)

        frame2 = Frame(self.root)
        frame2.pack(side=TOP)
        label2 = Label(frame2, text=u"帳票コード:", font=font)
        label2.pack(side=LEFT)
        self.codeEntry = Entry(frame2, fg="blue", font=font, width=20)
        self.codeEntry.pack(side=LEFT)
        label3 = Label(frame2, text=u"帳票名称:", font=font)
        label3.pack(side=LEFT)
        self.captionEntry = Entry(frame2, fg="blue", font=font, width=20)
        self.captionEntry.pack(side=LEFT)

        frame4 = Frame(self.root)
        frame4.pack(side=TOP)
        self.execute = Button(frame4, text=u"作成", command=self.start, font=font)
        self.execute.pack()
        self.root.mainloop()

    def findSrcFolder(self):
        import tkFileDialog
        dlg = tkFileDialog.Open()
        dlg.options['initialdir'] = os.path.abspath(self.srcDir.get())
        dlg.options['filetypes'] = [(u"XMLファイル", "*.xml")]
        filename = dlg.show()
        if filename:
            self.srcDir.delete(0, END)
            self.srcDir.insert(INSERT, os.path.abspath(filename))

    def findTarFolder(self):
        import tkFileDialog
        dlg = tkFileDialog.Directory()
        dlg.options['initialdir'] = self.tarDir.get()
        if dlg.show():
            self.tarDir.delete(0, END)
            self.tarDir.insert(INSERT, os.path.abspath(dlg.options['initialdir']))

    def start(self):
        srcDir = self.srcDir.get().strip()
        tarDir = self.tarDir.get().strip()
        code = self.codeEntry.get().strip()
        caption = self.captionEntry.get().strip()
        
        if len(srcDir) > 0 and len(tarDir) > 0 and len(code) > 0:
            if not os.path.exists(srcDir):
                tkMessageBox.showinfo("Alert", "XMLファイルが存在しない。")
                return

            if not os.path.exists(tarDir):
                os.makedirs(tarDir)

##            if not os.path.exists(r"printform.tpl"):
##                tkMessageBox.showinfo("Alert", "Template can't find.")
##                return

            try:
                prtform = ConvertReport.GetItemsFromXml(srcDir)
                ConvertReport.GenPrintForm(code, caption, prtform, tarDir)
                tkMessageBox.showinfo("Success", "作成しました。")
            except:
                tkMessageBox.showinfo("Failed", "作成失敗です。")
        else:
            tkMessageBox.showinfo("Alert", "XMLファイル・帳票フォルダ・コードが省略不可です。")

WinApp()
